package com.yl.chainStore.services.pay

import com.yl.chainStore.entity.pay.*
import com.yl.chainStore.pojo.vo.warehouse.UpdateItemConfigVo
import com.yl.common.control.ResponseBody

/**
 * 收费项目
 */
interface ISysCompanyPayItemService {

	/**
	 * 修改项目基本信息
	 */
	fun updateItem(item:SysCompanyPayItem):ResponseBody

	/**
	 * 获取详情，包含配置
	 */
	fun itemDetail(itemId:Long,deptId:Long?):SysCompanyPayItem?

	/**
	 * 单独获取项目回访配置
	 */
	fun getVisitConfig(itemId: Long, deptId: Long?):List<SysCompanyReturnVisitConfig>?

	/**
	 * 单独获取项目执行配置
	 */
	fun getOperatorConfig(itemId:Long,deptId: Long?):List<SysCompanyPayItemsOperatorConfig>?

	/**
	 * 删除收费项目
	 */
	fun delItem(itemId:Long):ResponseBody

	/**
	 * 添加收费项目配置
	 */
	fun addOperatorCfg(operatorConfig : SysCompanyPayItemsOperatorConfig):ResponseBody

	/**
	 * 修改收费项目配置
	 */
	fun updateOperatorCfg(operatorConfig : SysCompanyPayItemsOperatorConfig):ResponseBody

	/**
	 * 删除收费项目配置
	 */
	fun delOperatorCfg(operatorConfigId: Long):ResponseBody

	/**
	 * 清除收费项目配置
	 */
	fun cleanOperatorCfg(itemId:Long,deptId: Long?,isAll :Boolean):ResponseBody

	/**
	 * 添加收费项目回访配置
	 */
	fun addReturnVisitCfg(returnVisitConfig : SysCompanyReturnVisitConfig):ResponseBody

	/**
	 * 修改收费项目回访配置
	 */
	fun updateReturnVisitCfg(returnVisitConfig : SysCompanyReturnVisitConfig):ResponseBody

	/**
	 * 删除收费项目回访配置
	 */
	fun delReturnVisitCfg(returnVisitConfigId: Long):ResponseBody

	/**
	 * 清除收费项目回访配置
	 * isAll  是否包含系统基础设置
	 */
	fun cleanReturnVisitCfg(itemId:Long, deptId: Long?,isAll :Boolean):ResponseBody

	/**
	 * 设置收费项目私有属性
	 */
	fun setPayItemDeptConfig(vo : UpdateItemConfigVo):ResponseBody

	/**
	 * 部门删除一个收费项目
	 *              1、自己添加的直接全部删除
	 *              2，不是自己加的设置隐藏
	 */
	fun deptDelPayItem(id:Long,deptId: Long):ResponseBody

	/**
	 * 获取收费项目在分院上的配置
	 */
	fun getDeptItemDetail(itemId: Long,deptId: Long): PayCompanyDeptItem?

	/**
	 * 设置收费项目 对应 显示用户形式
	 * 会先清除，再添加
	 */
	fun setCustomerShowSetting(itemId:Long,subCompanyId:Long,rules:List<PayItemCustomerShowRule>?):ResponseBody

	/**
	 * 获取 收费项目 对应 显示用户形式 设置
	 */
	fun getCustomerShowSetting(itemId: Long,subCompanyId:Long):List<PayItemCustomerShowRule>
}
